2669. Поворот

 

Дан массив n × m. Требуется повернуть его по часовой стрелке на 90 градусов.

 

Вход. В первой строке даны натуральные числа n и m (1 ≤ n, m ≤ 50). На следующих n строках записано по m неотрицательных чисел, не превышающих 109 – сам массив.

 

Выход.  Выведите перевернутый массив в формате входных данных.

 

Пример входа

Пример выхода

3 4
1 2 3 4
5 6 7 8

9 10 11 12

4 3

9 5 1

10 6 2

11 7 3

12 8 4

 

 

РЕШЕНИЕ

двумерный массив

 

Анализ алгоритма

При повороте на 90 градусов по часовой стрелке элемент матрицы a с координатами (i, j) переходит в элемент матрицы b с координатами (j, ni – 1). Если размер матрицы a составляет n × m, то размер матрицы b будет m × n. Индексация обеих матриц начинается с 0.

Реализация алгоритма

Объявим входной массив a и результирующий перевернутый b.

 

#define MAX 55

int a[MAX][MAX], b[MAX][MAX];

 

Читаем входной массив.

 

scanf("%d %d",&n,&m);

for(i = 0; i < n; i++)

for(j = 0; j < m; j++)

  scanf("%d",&a[i][j]);

 

Переворачиваем массив а в b.

 

for(i = 0; i < n; i++)

for(j = 0; j < m; j++)

  b[j][n-i-1] = a[i][j];

 

Выводим перевернутый массив b.

 

printf("%d %d\n",m,n);

for(i = 0; i < m; i++)

{

  for(j = 0; j < n; j++)

    printf("%d ",b[i][j]);

  printf("\n");

}